অ্যাপাচি অ্যাকটিভএমকিউ একটি মেসেজ ব্রোকার সিস্টেম যা মেসেজিং সিস্টেমের মধ্যে তথ্য প্রেরণ এবং গ্রহণের কাজ করে। এই প্রক্রিয়াতে Message Producers এবং Message Consumers দুটি প্রধান ভূমিকা পালন করে। অ্যাকটিভএমকিউ ব্যবহার করে, Java অ্যাপ্লিকেশন তৈরি করা হয় যা মেসেজ পাঠানোর জন্য প্রোডিউসার (Producer) এবং গ্রহণ করার জন্য কনজিউমার (Consumer) হিসেবে কাজ করে।
এখানে আমরা অ্যাকটিভএমকিউ ব্যবহার করে একটি Message Producer এবং Message Consumer তৈরি করার প্রক্রিয়া দেখবো।
একটি Message Producer হলো এমন একটি অ্যাপ্লিকেশন যা মেসেজ তৈরি করে এবং অ্যাকটিভএমকিউ ব্রোকারে পাঠায়। এটি একটি নির্দিষ্ট কিউ (Queue) বা টপিক (Topic) ব্যবহার করে মেসেজ পাঠায়।
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class MessageProducerExample {
public static void main(String[] args) {
try {
// ActiveMQ ConnectionFactory তৈরি
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connectionFactory.createConnection();
connection.start(); // সংযোগ শুরু করা
// সেশন তৈরি
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// কিউ তৈরি
Destination destination = session.createQueue("TEST_QUEUE");
// MessageProducer তৈরি
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); // Non-persistent delivery mode
// টেক্সট মেসেজ তৈরি
TextMessage message = session.createTextMessage("Hello, ActiveMQ!");
// মেসেজ পাঠানো
producer.send(message);
System.out.println("Message Sent: " + message.getText());
// সংযোগ বন্ধ
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
এই কোডে, MessageProducerExample ক্লাসটি একটি মেসেজ তৈরি করে এবং সেটি "TEST_QUEUE"-এ পাঠায়। এখানে Non-persistent মেসেজ ডেলিভারি মোড ব্যবহার করা হয়েছে, যার মানে মেসেজটি দ্রুত পাঠানো হবে এবং সিস্টেম বন্ধ হলে এটি হারিয়ে যাবে।
একটি Message Consumer হলো এমন একটি অ্যাপ্লিকেশন যা একটি নির্দিষ্ট কিউ বা টপিক থেকে মেসেজ গ্রহণ করে এবং সেটি প্রক্রিয়া করে।
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class MessageConsumerExample {
public static void main(String[] args) {
try {
// ActiveMQ ConnectionFactory তৈরি
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connectionFactory.createConnection();
connection.start(); // সংযোগ শুরু করা
// সেশন তৈরি
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// কিউ তৈরি
Destination destination = session.createQueue("TEST_QUEUE");
// MessageConsumer তৈরি
MessageConsumer consumer = session.createConsumer(destination);
// মেসেজ গ্রহণ
Message message = consumer.receive();
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
System.out.println("Message Received: " + textMessage.getText());
}
// সংযোগ বন্ধ
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
এই কোডে, MessageConsumerExample ক্লাসটি "TEST_QUEUE"-থেকে মেসেজ গ্রহণ করে এবং সেটি কনসোল-এ প্রিন্ট করে।
এই সিস্টেমটি JMS (Java Message Service) প্রোটোকল ব্যবহার করে অ্যাপাচি অ্যাকটিভএমকিউ ব্রোকারের মধ্যে মেসেজ প্রেরণ এবং গ্রহণ করে।
অ্যাপাচি অ্যাকটিভএমকিউ (Apache ActiveMQ) ব্যবহারের মাধ্যমে Message Producers এবং Message Consumers তৈরি করা একটি সহজ প্রক্রিয়া। Producer মেসেজ তৈরি করে এবং অ্যাকটিভএমকিউ ব্রোকারে পাঠায়, যেখানে Consumer সেই মেসেজ গ্রহণ করে এবং প্রক্রিয়া করে। এই পদ্ধতিতে অ্যাপ্লিকেশনগুলো একে অপরের সাথে অ্যাসিঙ্ক্রোনাসভাবে যোগাযোগ করতে পারে এবং তথ্য আদান-প্রদান নিশ্চিত করতে পারে।
common.read_more